﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace senac.util
{
    public class Util
    {
        #region singleton
        private static Util instance;

        private Util() { }

        public static Util Instance
        {
            get 
            {
                if (instance == null)
                    instance = new Util();

                return instance;
            }
        }
        #endregion

        public void EscreverLog(opcoesEscrita opcao, string msg)
        {
            System.IO.TextWriter arquivo = null;

            try
            {
                string pasta = "C:/LogConsultaCursoUnidade";
                string diretorio = pasta + "/Log" + DateTime.Now.ToString("yyyyMMdd") + ".txt";

                if (!Directory.Exists(pasta))
                    Directory.CreateDirectory(pasta);

                if (!System.IO.File.Exists(diretorio))
                    System.IO.File.Create(diretorio).Close();

                arquivo = System.IO.File.AppendText(diretorio);

                switch (opcao)
                {
                    case opcoesEscrita.EscreverInicio:
                        arquivo.WriteLine("INICIANDO SERVIÇO! ==> " + DateTime.Now.ToString("HH:mm:ss"));
                        break;
                    case opcoesEscrita.EscreverFim:
                        arquivo.WriteLine("PARANDO SERVIÇO! ==> " + DateTime.Now.ToString("HH:mm:ss"));
                        break;
                    case opcoesEscrita.EscreverMensagem:
                        arquivo.WriteLine("Mensagem " + DateTime.Now.ToString("HH:mm:ss") + " ==> " + msg);
                        break;
                    case opcoesEscrita.EscreverExcecao:
                        arquivo.WriteLine("Exceção " + DateTime.Now.ToString("HH:mm:ss") + " ==> " + msg);
                        break;
                }
            }
            catch (Exception exc)
            {
                arquivo.WriteLine("Erro ==> " + exc.Message);
            }
            finally
            {
                arquivo.Close();
            }
        }

        public enum opcoesEscrita
        {
            EscreverInicio,
            EscreverFim,
            EscreverMensagem,
            EscreverExcecao
        }
    }
}
